package gui;

import be.VisitaProgramada;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.location.Location;
import javax.microedition.location.LocationListener;
import javax.microedition.location.LocationProvider;
import javax.microedition.location.QualifiedCoordinates;
import midlet.MidletCielsa;
import rms.ContrasteRMS;
import util.CommandBuilder;

/**
 *
 * @author Dikas
 */
public class FrmRegistrarContraste extends Form implements CommandListener, LocationListener {

    private MidletCielsa midlet;
    private Displayable previousDisplayable;
    private Command cmdSalir;
    private Command cmdOk;
    private int codigo;
    private StringItem strReporte;
    private StringItem strInformacionCliente;
    private TextField txtNombreCliente;
    private TextField txtDireccioCliente;
    private StringItem strInformacionMedidor;
    private TextField txtSuministro;
    private TextField txtTipo;
    private TextField txtNumeroSerie;
    private TextField txtAno;
    private StringItem strInformacionContraste;
    private ChoiceGroup cgApreciacion;
    private TextField txtLectura;
    private TextField txtVoltaje;
    private TextField txtNumeroPrecinto;
    private ChoiceGroup cgPruebaVacio;
    private TextField txtComentario;
    private StringItem strEnsayos;
    private TextField txtPrueba5;
    private TextField txtPrueba10;
    private TextField txtPrueba100;
    private TextField txtPruebaImax;
    private VisitaProgramada vp = null;
    private LocationProvider locationProvider = null;

    public FrmRegistrarContraste(MidletCielsa midlet, Displayable previousdisplayable, int codVisita) {
        super("Registro de Contraste ");

        try {
            locationProvider = LocationProvider.getInstance(null);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }

        this.codigo = codVisita;
        ContrasteRMS contrasteRMS = new ContrasteRMS();
        vp = contrasteRMS.getVisita(codigo);

        strReporte = new StringItem("N° Reporte", vp.getReporte());

        strInformacionCliente = new StringItem("Información de Cliente", null);
        txtNombreCliente = new TextField("Nombre", vp.getCliente(), 30, TextField.UNEDITABLE);
        txtDireccioCliente = new TextField("Direccion", vp.getCliente_direccion(), 30, TextField.UNEDITABLE);

        strInformacionMedidor = new StringItem("Información del Medidor", "");
        txtSuministro = new TextField("Suministro", vp.getMedidor_suministro(), 30, TextField.UNEDITABLE);
        txtTipo = new TextField("Tipo", vp.getMedidor_tipo(), 30, TextField.UNEDITABLE);
        txtNumeroSerie = new TextField("Numero de Serie", vp.getMedidor_serie(), 30, TextField.UNEDITABLE);
        txtAno = new TextField("Año", vp.getMedidor_ano(), 30, TextField.UNEDITABLE);

        strInformacionContraste = new StringItem("Información del Contraste", "");
        cgApreciacion = new ChoiceGroup("Apreciación", ChoiceGroup.POPUP);
        cgApreciacion.append("M", null);
        cgApreciacion.append("R", null);
        cgApreciacion.append("B", null);
        txtLectura = new TextField("Lectura", "", 30, TextField.ANY);
        txtVoltaje = new TextField("Voltaje", "", 30, TextField.DECIMAL);
        txtNumeroPrecinto = new TextField("Numero de precinto", "", 30, TextField.NUMERIC);
        cgPruebaVacio = new ChoiceGroup("Prueba de vacio", ChoiceGroup.POPUP);
        cgPruebaVacio.append("Aprueba", null);
        cgPruebaVacio.append("Desaprueba", null);
        txtComentario = new TextField("Comentario", "", 100, TextField.ANY);
        strEnsayos = new StringItem("Ensayos", "");
        txtPrueba5 = new TextField("Prueba 5%", "", 20, TextField.DECIMAL);
        txtPrueba10 = new TextField("Prueba 10%", "", 20, TextField.DECIMAL);
        txtPrueba100 = new TextField("Prueba 100%", "", 20, TextField.DECIMAL);
        txtPruebaImax = new TextField("Prueba iMax", "", 20, TextField.DECIMAL);
        cmdSalir = CommandBuilder.getExit();
        cmdOk = CommandBuilder.getOk();
        append(strReporte);
        append(strInformacionCliente);
        append(txtNombreCliente);
        append(txtDireccioCliente);
        append(strInformacionMedidor);
        append(txtSuministro);
        append(txtTipo);
        append(txtNumeroSerie);
        append(txtAno);
        append(strInformacionContraste);
        append(cgApreciacion);
        append(txtLectura);
        append(txtVoltaje);
        append(txtNumeroPrecinto);
        append(cgPruebaVacio);
        append(txtComentario);
        append(strEnsayos);
        append(txtPrueba5);
        append(txtPrueba10);
        append(txtPrueba100);
        append(txtPruebaImax);
        addCommand(cmdSalir);
        addCommand(cmdOk);
        this.previousDisplayable = previousdisplayable;
        this.midlet = midlet;
        setCommandListener(this);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == cmdSalir) {
            midlet.setDisplay(previousDisplayable);
        } else if (c == cmdOk) {
            if (txtComentario.getString().trim().compareTo("") != 0
                    || (txtVoltaje.getString().trim().compareTo("") != 0
                    && txtNumeroPrecinto.getString().trim().compareTo("") != 0
                    && txtPrueba5.getString().trim().compareTo("") != 0
                    && txtPrueba10.getString().trim().compareTo("") != 0
                    && txtPrueba100.getString().trim().compareTo("") != 0
                    && txtPruebaImax.getString().trim().compareTo("") != 0)) {
                vp.setVoltaje(txtVoltaje.getString());
                vp.setPrecinto(txtNumeroPrecinto.getString());
                vp.setComentario(txtComentario.getString());
                vp.setApreciacion(cgApreciacion.getString(cgApreciacion.getSelectedIndex()));
                vp.setPruebaVacio(cgPruebaVacio.getString(cgPruebaVacio.getSelectedIndex()));
                vp.setPrueba5(txtPrueba5.getString());
                vp.setPrueba10(txtPrueba10.getString());
                vp.setPrueba100(txtPrueba100.getString());
                vp.setPruebaimax(txtPruebaImax.getString());
                vp.setLectura(txtLectura.getString());

                new Thread() {

                    public void run() {
                        locationProvider.setLocationListener(FrmRegistrarContraste.this, 1, -1, -1);
                        System.out.println(vp.getLongitud() + "," + vp.getLatitud());
                        FrmConfirmarRegistro fcr = new FrmConfirmarRegistro(midlet, FrmRegistrarContraste.this, vp, codigo);
                        midlet.setDisplay(fcr);
                    }
                }.start();


            }
        }

    }

    public void locationUpdated(LocationProvider lp, Location location) {
        if (location != null && location.isValid()) {
            QualifiedCoordinates qc = location.getQualifiedCoordinates();
            if (vp != null) {
                vp.setLongitud(qc.getLongitude());
                vp.setLatitud(qc.getLatitude());
            }
        }
    }

    public void providerStateChanged(LocationProvider lp, int i) {
    }
}